import { getSessionKey } from '@/common/js/http.api.js';
import {
	getData
} from "@/common/js/getSign.js";

function getCode() {
	return new Promise((resolve, reject) => {
		uni.login({
			success(rel) {
				resolve(rel.code);
			}
		});
	}).catch(e => {
		console.log(e);
	});
}
module.exports = (vm) => {
	// 环境判断
	let baseUrl = vm.baseUrl;
	uni.$u.http.setConfig((config) => {
		/* config 为默认全局配置*/
		config.header = {
			'Content-Type': 'application/json;charset=UTF-8',
			'Content-Type': 'application/x-www-form-urlencoded',
		},
		config.baseURL = baseUrl; 
		config.withCredentials = true;
		return config
	})
	// 请求拦截部分，如配置，每次请求前都会执行
	uni.$u.http.interceptors.request.use(async (config) => {
		// 引用token
		let data = config.method==="GET" ? config.params : config.data;
		if(uni.getStorageSync('token')) data.token = uni.getStorageSync('token');
		if(vm.pid) data.pid = vm.pid;
		// data.s = config.url;
		//TODO 加密数据
		// config.data.sign = "abiao"
		data = getData(data)
		delete data.s
		return config;
	}, config => { // 可使用async await 做异步操作
		return Promise.reject(config)
	})
	// 响应拦截，如配置，每次请求结束都会执行本方法
	uni.$u.http.interceptors.response.use(async (response) => {
		const data = response.data;
		const custom = response.config?.custom;
		console.log('gg', data);
		if (data.code == 401) {
			uni.$u.toast('身份已过期，请重新登录'),uni.$u.sleep(1500).then(()=>{
				uni.setStorageSync('loginStatus', 0);
				uni.setStorageSync('token', "");
				uni.$u.route({
					type: 'navigateTo',
					url: '/pages/login/login'
				});
			});
		}
		if (data.code <= 0) {
			// if (!custom.toast) {
			// 	uni.$u.toast(data.msg);
			// }
			// // 如果需要catch返回，则进行reject
			// if (custom?.catch) {
			// 	return Promise.reject(data)
			// } else {
			// 	// 否则返回一个pending中的promise，请求不会进入catch中
			// 	return new Promise(() => { })
			// }
		}
		return !data ? {} : data;
	},async (response) => {
		/*  对响应错误做点什么 （statusCode !== 200）*/
		if (response.code == 401) {
			uni.$u.toast('身份已过期，请重新登录'),uni.$u.sleep(1500).then(()=>{
				uni.$u.vuex("loginInfo", null), uni.$u.vuex("userInfo", null), uni.$u.route({
					type: 'navigateTo',
					url: '/pages/login/login'
				});
			});
		}else if (response.code == 500) {
			uni.$u.toast('网络开了点小差，请重试');
		} else if (response.code == 404) {
			return;
		} else {
			// uni.$u.toast(response.data.msg);
		}
		return new Promise(() => { });
	})
}
